今天沒有跟著 tutorial 繼續往下走,CS193P 單集也有點長看不完QQ
於是就決定翻翻 Swift Doc 然後筆記一下吧。
struct & class 有很多相似的地方,都可以在裡面儲存變數,都可以在裡面寫函式。不過兩個有一個根本上的差異,struct 是 pass by value,class 則是 pass by ref。
value type 的意思就是,當今天這個 struct 的 instance 被指給另一個變數,或者被當成參數傳給函式時,傳遞的會是實際的值,而不是記憶體位置,所以兩個 instance 之間是被獨立開來的。
而 reference type 則是相反,當 class a 被 assign 給另一個變數 b,由於兩方指向同一個 instance,任何一方的改動都會造成 instance 的變化,而這是好是壞就看使用情境了。
至於要怎麼判斷兩個 class instance 是否相同?swift 裡面提供了兩種 operator。===
可以判斷是否為同一個 instance,==
則是判斷兩個 instance 是否 equivalent in value。
最後,什麼時候使用 struct,什麼時候使用 class 呢?文件 中給出的建議是,基本上預設使用 struct( swift 的 struct 已經涵括了很多其他語言中 class 裡面有的 feature),如果是很多地方都可共用的 instance 才用 struct(像是用來處理 local db 的連線),不過這要盡可能謹慎使用。